Agent Skills原理及应用

使用“智能体技能”为智能体赋予应对现实世界的能力

Claude 实力强大,但实际工作往往需要过程性知识和组织上下文。今天,我们隆重推出“智能体技能”(Agent Skills),这是一种利用文件和文件夹构建专用智能体的全新方式。

随着模型能力的提升,我们现在能够构建与完整计算环境交互的通用智能体。例如,Claude Code 可以通过执行本地代码和访问文件系统来完成跨领域的复杂任务。但是,随着这些智能体变得越来越强大,我们需要一种更具组合性、可扩展性和可移植性的方式,为它们配备特定领域的专业知识。

因此,我们创建了“智能体技能”:这是一个包含指令、脚本和资源的结构化文件夹,智能体可以动态发现并加载这些内容,从而在特定任务中表现得更出色。“技能”通过将您的专业知识打包成 Claude 可用的可组合资源,扩展了 Claude 的能力,将通用智能体转化为满足您需求的专用智能体。

为智能体构建一项“技能”,就像为新员工编写入职指南。现在,我们无需再为每个用例构建零散的定制化智能体,任何人都可以通过记录并分享自己的过程性知识,利用可组合的能力来实现智能体的专业化。在本文中,我们将解释什么是“技能”、它们是如何工作的,并分享构建专属技能的最佳实践。

Pasted image 20260318152041.png

一项技能通常是一个包含 SKILL.md 文件的目录,该目录中还包含了结构化的指令、脚本和资源文件夹,用于赋予智能体额外的能力。

技能的结构剖析

为了解“技能”的实际应用,我们来看一个真实的例子:为 Claude 最近推出的文档编辑功能提供支持的一项技能。Claude 在理解 PDF 方面已经具备了丰富的知识,但在直接操作 PDF(例如填写表单)方面能力有限。通过这项 PDF 技能,我们就能赋予 Claude 这些新能力。

简单来说,一项技能就是一个包含 SKILL.md 文件的目录。这个文件必须以包含必要元数据(名称和描述)的 YAML 头部信息(Frontmatter)开头。在启动时,智能体会将所有已安装技能的名称和描述预加载到其系统提示词(System Prompt)中。

这种元数据是“渐进式披露”的第一层:它刚好能提供足够的信息,让 Claude 知道应该在何时使用各项技能,而无需将其全部内容加载到上下文中。该文件的正文部分是第二层细节。如果 Claude 认为该技能与当前任务相关,它就会读取完整的 SKILL.md 到上下文中,从而加载这项技能。

Pasted image 20260318152132.png

SKILL.md 文件必须以包含文件名和描述的 YAML 头部信息开头,这些信息在启动时会被加载到系统提示词中。

随着技能变得越来越复杂,它们包含的上下文可能会过多而无法放入单个 SKILL.md 中,或者某些上下文仅在特定场景下才相关。在这些情况下,技能可以在技能目录中捆绑包含额外文件,并在 SKILL.md 中通过名称引用它们。这些额外的链接文件是第三层(以及更深层次)的细节,Claude 可以选择仅在需要时去导航和发现它们。

在下面展示的 PDF 技能中,SKILL.md 引用了两个额外的文件(reference.mdforms.md),这是技能作者选择与核心 SKILL.md 捆绑在一起的。通过将填写表单的指令移到一个单独的文件(forms.md)中,技能作者能够保持核心技能的精简,并相信 Claude 只会在填写表单时才去读取 forms.md

Pasted image 20260318152146.png

你可以将更多上下文(通过附加文件)合并到技能中,Claude 随后可根据系统提示词触发这些内容。

“渐进式披露”是让智能体技能具备灵活性和可扩展性的核心设计原则。就像一本结构清晰的手册,从目录开始,接着是特定章节,最后是详细的附录,技能让 Claude 仅在需要时才加载信息:

层级 文件 上下文窗口 Token 数量
1 SKILL.md 元数据 (YAML) 始终加载 ~100
2 SKILL.md 正文 (Markdown) 技能触发时加载 <5k
3+ 捆绑文件(文本文件、脚本、数据) 由 Claude 按需加载 无限制*

拥有文件系统和代码执行工具的智能体在处理特定任务时,不需要将技能的全部内容读取到其上下文窗口中。这意味着,可以捆绑到一个技能中的上下文数量实际上是无限的。

技能与上下文窗口

下图展示了当用户消息触发某项技能时,上下文窗口是如何变化的。

Pasted image 20260318152220.png

技能通过系统提示词在上下文窗口中被触发。

图中展示的操作序列如下:

技能与代码执行

技能还可以包含代码,供 Claude 根据情况作为工具执行。

大型语言模型擅长处理许多任务,但某些操作更适合通过传统代码执行来完成。例如,通过生成词元(Token)来对列表进行排序,其成本远高于直接运行排序算法。除了效率方面的考虑,许多应用程序还需要只有代码才能提供的确定性可靠性。

在我们的示例中,PDF 技能包含一个预先编写的 Python 脚本,用于读取 PDF 并提取所有表单字段。Claude 可以在不将脚本或 PDF 加载到上下文中的情况下运行该脚本。由于代码是确定性的,因此这种工作流是一致且可重复的。

Pasted image 20260318152358.png

技能还可以包含代码,供 Claude 根据任务性质自主决定作为工具执行。

技能的开发与评估

以下是一些帮助您开始编写和测试技能的实用指南:

使用技能时的安全注意事项

技能通过指令和代码为 Claude 提供了新的能力。虽然这使技能变得非常强大,但也意味着恶意技能可能会在使用环境中引入漏洞,或引导 Claude 窃取数据及采取意外的行动。

我们建议仅从受信任的来源安装技能。当从不太受信任的来源安装技能时,请在使用前对其进行全面审查。首先阅读技能中捆绑的文件内容以了解其功能,要特别注意代码依赖项以及诸如图像或脚本之类的捆绑资源。同样,也要留意技能中指示 Claude 连接到可能不受信任的外部网络源的指令或代码。

技能的未来

如今,Claude.ai、Claude Code、Claude Agent SDK 以及 Claude 开发者平台(Claude Developer Platform)都已经支持“智能体技能”。

在接下来的几周里,我们将继续添加支持技能创建、编辑、发现、共享和使用全生命周期的功能。我们对于“技能”能够帮助组织和个人与 Claude 共享其上下文和工作流的巨大潜力感到特别期待。我们还将探索“技能”如何通过教会智能体使用涉及外部工具和软件的更复杂的工作流,来作为模型上下文协议(MCP)服务器的补充。

展望更远的未来,我们希望能让智能体自行创建、编辑和评估“技能”,让它们能够将自己的行为模式编码为可重复使用的能力。

“技能”是一个简单的概念,且具有相对应的简单格式。这种简单性使得组织、开发者和最终用户更容易构建定制化的智能体并赋予它们新的能力。

我们非常期待看到大家使用“技能”所构建出的成果。今天就开始行动吧,欢迎查阅我们的“技能”文档和示例指南(Cookbook)。

致谢

本文由 Barry Zhang、Keith Lazuka 和 Mahesh Murag 撰写,他们都非常喜欢文件夹。特别感谢 Anthropic 公司内众多倡导、支持和构建“技能”的同事们。